/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package umis2.nivel;

import java.awt.Point;
import umis2.controladorcentral.Acotador;
import umis2.controladorcentral.Transformador;
import umis2.vista.Vista;

/**
 *
 * @author Alex
 */
public class Jugador extends Personaje{
    private int direccion = 0;
    private boolean saltando = false;
    private int gravedad=0;
    private String nombre;
    int sx = 1;
    int sy = 1;
    boolean subiendo = true;

    public Jugador(String nombre){
        this.nombre=nombre;
    }

    @Override
    public void mover(Point punto) {
        if(!saltando){
            Point actual = getPosicion();
            Transformador.getInstance().mover(punto.x-actual.x);
            if(punto.x>actual.x)
                direccion = 2;
            else
                direccion = 1;
            setPosicion(punto);

            if(colisiona()){
                setPosicion(actual);
                gravedad=0;
            }
            else{
                gravedad++;
                int y = punto.y-1*gravedad;
                mover(new Point(punto.x, y));
            }
            Transformador.getInstance().actualizarVista();
        }
        else{
            gravedad++;
            int y = punto.y-1*gravedad;
            mover(new Point(punto.x, y));
        }
        System.out.println("Jugador - Actualizar vista begins");
        Vista.getProxy().actualizar(Vista.getNivel());
        System.out.println ("Jugador - Actualizar vista ends");
        Transformador.getInstance().actualizarVista();
    }

    @Override
    public void saltar() {
        saltando = true;
        System.out.println(sy);
        System.out.println(sx);
        Point actual = getPosicion();
        if(subiendo){
            setPosicion(new Point(actual.x + sx,actual.y + sy));
            if(colisiona())
                setPosicion(new Point(actual.x,actual.y));
        } else {
            setPosicion(new Point(actual.x + sx, actual.y - sy));
            if(colisiona())
                setPosicion(new Point(actual.x,actual.y));
        }
        if(sx<11)
            sx++;
        else
            sx = 1;
        if(subiendo)
            sy+=sy;
        else
            sy-=sy/2;
        if(sy==32)
            subiendo=false;
        else if(sy<=1)
            subiendo=true;

        Transformador.getInstance().actualizarVista();
        System.out.println("Jugador - Actualizar vista begins");
        Vista.getProxy().actualizar(Vista.getNivel());
        System.out.println ("Jugador - Actualizar vista ends");
       saltando = false;
        
        

    }
    	 public double gradosARadianes(double g){
		 return (g*Math.PI)/180;
	 }

    @Override
    public void atacar(int tipo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean colisiona() {
        for(Plataforma p : Acotador.getInstance().acotarNivel()){
            if(getRectangulo().intersects(p.getRectangulo()) && p.colisiona())
                return true;
        }
        return false;
    }

    public String getLlave() {
        return "personaje";
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

}
